10 REM  SEEK AND DESTROY 
20 REM  BY RICHARD PORTER 
30 CALL CLEAR
40 RANDOMIZE
50 TP=0
60 SC=0
70 TC=99
80 GOSUB 1910
90 GOSUB 2870
100 PX=9
110 PY=15
120 TL=25
130 REM   SETUP SCREEN  
140 CALL CLEAR
150 CALL COLOR(9,4,1)
160 CALL COLOR(10,4,1)
170 CALL COLOR(2,4,1)
180 CALL COLOR(12,4,1)
190 CALL COLOR(3,4,1)
200 CALL COLOR(4,4,1)
210 CALL COLOR(11,4,1)
220 PRINT "       SEEK & DESTROY       "
230 CALL CHAR(120,"0000000000000000")
240 GOSUB 1810
250 GOSUB 1750
260 GOSUB 1660
270 GOSUB 1580
290 CALL HCHAR(19,3,58)
300 CALL HCHAR(20,2,59)
310 CALL HCHAR(20,4,60)
320 CALL HCHAR(21,3,61)
330 CALL HCHAR(2,9,41)
340 CALL HCHAR(2,30,62)
350 CALL HCHAR(2,10,112,20)
360 CALL HCHAR(20,6,43)
370 CALL HCHAR(20,3,44)
380 CALL HCHAR(3,2,84)
390 CALL HCHAR(3,3,79)
400 CALL HCHAR(3,4,80)
410 CALL HCHAR(3,6,TP+48)
420 FOR L=1 TO LEN("HITS    TIME")
430 CALL HCHAR(18,10+L,ASC(SEG$("HITS    TIME",L,1)))
440 NEXT L
450 CALL HCHAR(18,16,SC+48)
460 CALL HCHAR(PY,PX,40)
470 GOSUB 2810
480 CALL COLOR(9,2,1)
490 CALL COLOR(10,2,1)
500 CALL COLOR(2,2,1)
510 CALL COLOR(12,2,1)
520 CALL COLOR(3,2,1)
530 CALL COLOR(4,2,1)
540 REM  MOVEMENT 
550 GOSUB 2330
560 TL=TL-1
570 IF TL>1 THEN 660
580 TC=TC-10
590 GOSUB 2810
600 TL=25
610 IF TC>9 THEN 660
620 CALL HCHAR(18,25,32)
630 IF TC>0 THEN 660
640 CALL CHAR(120,"0042241818244200")
650 GOTO 1450
660 CALL KEY(0,K,S)
670 IF S=0 THEN 550
680 CALL SOUND(-1,110,01)
690 IF K<>69 THEN 810
700 IF PY<7 THEN 550
710 CALL HCHAR(PY,PX,108)
720 CALL GCHAR(PY-1,PX,CHK)
730 IF CHK=41 THEN 750
740 IF CHK<>120 THEN 780
750 GOSUB 2210
760 CALL HCHAR(PY-1,PX,42)
770 GOTO 1350
780 CALL HCHAR(PY-1,PX,40)
790 PY=PY-1
800 GOTO 550
810 IF K<>88 THEN 930
820 IF PY>14 THEN 550
830 CALL HCHAR(PY,PX,108)
840 CALL GCHAR(PY+1,PX,CHK)
850 IF CHK=41 THEN 870
860 IF CHK<>120 THEN 900
870 GOSUB 2210
880 CALL HCHAR(PY+1,PX,42)
890 GOTO 1350
900 CALL HCHAR(PY+1,PX,40)
910 PY=PY+1
920 GOTO 550
930 IF K<>83 THEN 1050
940 IF PX<10 THEN 550
950 CALL HCHAR(PY,PX,108)
960 CALL GCHAR(PY,PX-1,CHK)
970 IF CHK=41 THEN 990
980 IF CHK<>120 THEN 1020
990 GOSUB 2210
1000 CALL HCHAR(PY,PX+1,42)
1010 GOTO 1350
1020 CALL HCHAR(PY,PX-1,40)
1030 PX=PX-1
1040 GOTO 550
1050 IF K<>68 THEN 1170
1060 IF PX>23 THEN 550
1070 CALL HCHAR(PY,PX,108)
1080 CALL GCHAR(PY,PX+1,CHK)
1090 IF CHK=41 THEN 1110
1100 IF CHK<>120 THEN 1140
1110 GOSUB 2210
1120 CALL HCHAR(PY,PX+1,42)
1130 GOTO 1350
1140 CALL HCHAR(PY,PX+1,40)
1150 PX=PX+1
1160 GOTO 550
1170 IF K<>32 THEN 550
1180 CALL SOUND(100,110,1)
1190 GOSUB 2510
1200 IF OSC=SC THEN 550
1210 OSC=SC
1220 IF SC<>10 THEN 1290
1230 PRINT
1240 PRINT
1250 PRINT "EXPERTLY PLAYED."
1260 PRINT "ENEMY ELIMINATED."
1270 PRINT "WELL DONE."
1280 GOTO 1450
1290 IF SC<=TP THEN 1350
1300 TP=SC
1310 PRINT
1320 PRINT
1330 PRINT "NEW TOP SCORE."
1340 REM  ROUND END  
1350 CALL CHAR(120,"0042241818244200")
1360 IF TC<1 THEN 1450
1370 IF TC-10<1 THEN 1450
1380 PRINT
1390 PRINT
1400 PRINT "PRESS SPACE TO CONTINUE."
1410 CALL KEY(0,K,S)
1420 IF K<>32 THEN 1410
1430 TC=TC-TL
1440 GOTO 1540
1450 PRINT
1460 PRINT
1470 PRINT "PRESS Y TO CONTINUE."
1480 CALL KEY(0,K,S)
1490 IF S=0 THEN 1480
1500 IF K<>89 THEN 1560
1510 CALL CLEAR
1520 SC=0
1530 TC=99
1540 RESTORE
1550 GOTO 100
1560 STOP
1570 REM  ENEMY TANK LOCATION     
1580 ETX=9+INT(RND*16)
1590 ETY=6+INT(RND*10)
1600 IF ETX<>PX THEN 1620
1610 IF ETY=PY THEN 1580
1620 CALL HCHAR(ETY,ETX,41)
1630 RETURN
1640 REM  GENERATE MINEFIELD 
1650 OSC=0
1660 FOR L=1 TO 25
1670 X=9+INT(RND*16)
1680 Y=6+INT(RND*10)
1690 CALL HCHAR(Y,X,120)
1700 NEXT L
1710 CALL VCHAR(13,9,32,2)
1720 CALL HCHAR(15,10,32,2)
1730 RETURN
1740 REM  GENERATE FIELD 
1750 FOR L=1 TO 20
1760 READ X,Y
1770 CALL HCHAR(Y,X,96+INT(RND*4))
1780 NEXT L
1790 RETURN
1800 REM  SETUP SCREEN 
1810 CALL HCHAR(5,8,100)
1820 CALL HCHAR(5,9,106,17)
1830 CALL HCHAR(5,25,102)
1840 CALL VCHAR(6,8,104,10)
1850 CALL HCHAR(16,8,101)
1860 CALL HCHAR(16,9,105,17)
1870 CALL HCHAR(16,25,103)
1880 CALL VCHAR(6,25,107,10)
1890 RETURN
1900 REM  DEFINE GRAPHICS 
1910 CALL CHAR(40,"00183C7E7E3C1800")
1920 CALL CHAR(42,"082218BC2E114410")
1930 CALL CHAR(96,"C2673908F11F1860")
1940 CALL CHAR(97,"00103078CC060000")
1950 CALL CHAR(98,"00003030F03C0701")
1960 CALL CHAR(99,"40E084FC62020300")
1970 CALL CHAR(100,"FFE0C08080808080")
1980 CALL CHAR(101,"8080808080C0E0FF")
1990 CALL CHAR(102,"FF07030101010101")
2000 CALL CHAR(103,"01010101010307FF")
2010 CALL CHAR(104,"8080808080808080")
2020 CALL CHAR(105,"00000000000000FF")
2030 CALL CHAR(106,"FF00000000000000")
2040 CALL CHAR(107,"0101010101010101")
2050 REM  TARGET     
2060 CALL CHAR(41,"FFC3A59999A5C3FF")
2070 CALL CHAR(108,"0004421084114400")
2080 CALL CHAR(43,"EE8A8AEE2828E900")
2090 REM  CONTROLS 
2100 CALL CHAR(58,"00003C203C203C00")
2110 CALL CHAR(59,"0038242424380000")
2120 CALL CHAR(60,"003C203C043C0000")
2130 CALL CHAR(61,"0044281028440000")
2140 CALL CHAR(44,"1800009999000018")
2150 CALL CHAR(62,"000CFC1E3E7F83FF")
2160 REM  MINE 
2170 REM  CALL CHAR(120,"0000000000000000") 
2180 CALL CHAR(112,"0000D60000000000")
2190 RETURN
2200 REM  STRUCK MINE 
2210 FOR L=25 TO 1 STEP-1
2220 CALL SOUND(-75,-6,L)
2230 NEXT L
2240 CALL SOUND(700,-6,2)
2250 CALL SOUND(850,-6,1)
2260 CALL SOUND(1000,-6,0)
2270 TC=0
2280 RETURN
2290 REM  Y IS 6 TO 15 
2300 DATA 9,6,24,15,12,14,11,9,13,13,19,12,22,14,12,10,15,11,16,14,10,7,13,14
2310 DATA 24,8,21,9,18,10,11,11,9,9,15,8,18,15,11,15
2320 REM  SCAN FOR MINES 
2330 BC=0
2340 CALL GCHAR(PY-1,PX,CHK)
2350 IF CHK<>120 THEN 2370
2360 BC=BC+1
2370 CALL GCHAR(PY+1,PX,CHK)
2380 IF CHK<>120 THEN 2400
2390 BC=BC+1
2400 CALL GCHAR(PY,PX-1,CHK)
2410 IF CHK<>120 THEN 2430
2420 BC=BC+1
2430 CALL GCHAR(PY,PX+1,CHK)
2440 IF CHK<>120 THEN 2460
2450 BC=BC+1
2460 FOR L=1 TO BC
2470 CALL SOUND(175,2500+(L*10),17)
2480 NEXT L
2490 RETURN
2500 REM  PLAYER FIRE 
2510 CALL SOUND(-55,-5,0)
2520 CALL SOUND(-35,110,15)
2530 CALL COLOR(11,10,1)
2540 CALL COLOR(11,4,1)
2550 CALL GCHAR(PY-1,PX,CHK)
2560 OSC=SC
2570 IF CHK<>41 THEN 2620
2580 SC=SC+1
2590 GOSUB 3140
2600 CALL HCHAR(18,16,SC+48)
2610 GOTO 2790
2620 CALL GCHAR(PY+1,PX,CHK)
2630 IF CHK<>41 THEN 2680
2640 SC=SC+1
2650 GOSUB 3140
2660 CALL HCHAR(18,16,SC+48)
2670 GOTO 2790
2680 CALL GCHAR(PY,PX-1,CHK)
2690 IF CHK<>41 THEN 2740
2700 SC=SC+1
2710 GOSUB 3140
2720 CALL HCHAR(18,16,SC+48)
2730 GOTO 2790
2740 CALL GCHAR(PY,PX+1,CHK)
2750 IF CHK<>41 THEN 2790
2760 SC=SC+1
2770 GOSUB 3140
2780 CALL HCHAR(18,16,SC+48)
2790 RETURN
2800 REM  TIMER 
2810 TC$=STR$(TC)
2820 FOR L=1 TO LEN(TC$)
2830 CALL HCHAR(18,23+L,ASC(SEG$(TC$,L,1)))
2840 NEXT L
2850 RETURN
2860 REM  HOW TO PLAY 
2870 PRINT ")                          >"
2880 PRINT "       SEEK & DESTROY"
2890 PRINT
2900 PRINT
2910 PRINT "TAKE CONTROL OF YOUR TANK"
2920 PRINT "AND TAKE OUT THE STRANDED"
2930 PRINT "ENEMY VEHICLE."
2940 PRINT
2950 PRINT "USE E S D X TO MOVE AND"
2960 PRINT "PRESS SPACE TO FIRE."
2970 PRINT
2980 PRINT "TRY TO GET AS MANY HITS AS"
2990 PRINT "YOU CAN IN THE GIVEN TIME."
3000 PRINT
3010 PRINT "BEWARE THOUGH-ALARMS WILL"
3020 PRINT "SOUND IF MINES ARE NEARBY."
3030 PRINT
3040 PRINT
3050 PRINT "(PLAYER )TARGET `SAFE BRUSH"
3060 PRINT
3070 PRINT
3080 PRINT "    PRESS SPACE TO PLAY"
3090 CALL KEY(0,K,S)
3100 IF S=0 THEN 3090
3110 IF K<>32 THEN 3090
3120 RETURN
3130 REM  STRIKE ANIMATION 
3140 CALL CHAR(41,"00411E283C490200")
3150 CALL CHAR(41,"1000008001000040")
3160 CALL CHAR(41,"8A00400001800248")
3170 CALL HCHAR(2,9,32)
3180 CALL HCHAR(ETY,ETX,32)
3190 CALL CHAR(41,"FFC3A59999A5C3FF")
3200 RETURN
